home *** CD-ROM | disk | FTP | other *** search
/ Kelly Eighteen / Kelly Eighteen.iso / title.mst < prev    next >
Text File  |  1995-10-23  |  15KB  |  480 lines

  1.  
  2.     
  3.     '' Global variables
  4.  
  5.     GLOBAL TitleShortName$
  6.     GLOBAL TitleLongName$
  7.     GLOBAL MVBFileName$
  8.     GLOBAL PromptForPath%
  9.     GLOBAL DefaultPath$
  10.     GLOBAL ProgManGroup$
  11.     GLOBAL ProgManItem$
  12.  
  13.  
  14.     '' ****************************************************************
  15.     '' ** Setup Variables
  16.     '' ****************************************************************
  17.  
  18.     '' Set the following string to a short form of the title name
  19.     '' (for example, "Gallery")
  20.     
  21.     TitleShortName$ = "Kelly 18"
  22.     
  23.     '' Set the following string to a long form of the title name
  24.     '' (for example, "Viewer 2.0 Gallery")
  25.     
  26.     TitleLongName$ = "Kelly 18"
  27.         
  28.     '' Set the following variable to the name of the MVB file, without 
  29.     '' the filename extension (for example, "GALLERY")
  30.         
  31.     MVBFileName$ = "leg"
  32.         
  33.     '' The following variable determines whether Setup prompts the user
  34.     '' to specify a directory in which to install title files. (Files
  35.     '' to be installed on the hard disk must be listed in the TITLE.INF 
  36.     '' file under the [Installed Title Files] section.) Specify one of
  37.     '' the following values:
  38.     ''
  39.     '' 0    Install title files in the Windows directory (default setting).
  40.     ''      This is an appropriate setting if you have a limited number
  41.     ''      of files to copy (for example, a single custom icon or DLL).
  42.     ''
  43.     '' 1    Display a dialog box to prompt the user for a directory in 
  44.     ''      which to install files
  45.         
  46.     PromptForPath% = 0
  47.         
  48.     '' If you have specified 1 in PromptForPath%, set the following 
  49.     '' variable to the default path that will be displayed in the dialog
  50.     '' box (for example, "C:\GALLERY").
  51.         
  52.     DefaultPath$ = "c:\Legend"
  53.     
  54.     '' Set the following variable to the name of the program manager 
  55.     '' group you would like to create (for example, "Viewer 2.0 Gallery")
  56.         
  57.     ProgManGroup$ = "Legend"
  58.     
  59.     '' Set the following variable to the caption of the program manager 
  60.     '' item for your title (for example, "Gallery")
  61.         
  62.     ProgManItem$ = "Kelly 18"
  63.     
  64.     '***********************************************************************
  65.     '** Mainline
  66.     '***********************************************************************
  67.  
  68.     GLOBAL CUIDLL$
  69.  
  70.     '' Include files
  71.     '$INCLUDE 'setupapi.inc'
  72.     
  73.     '' Custom UI dll
  74.     CUIDLL$ = "mscuistf.dll"
  75.     
  76.     '' Dialog ID's
  77.     CONST DESTPATH      = 1000
  78.     CONST APPHELP       = 2000
  79.     CONST TOOBIG        = 3000
  80.     CONST BADPATH       = 4000
  81.     CONST SUCCESS       = 5000
  82.     
  83.     '' Bitmap ID
  84.     CONST LOGO = 1
  85.     
  86.     '' Functions and subroutines
  87.     DECLARE FUNCTION AddFont LIB "mscuistf.dll" (szFont$, szName$) AS INTEGER
  88.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  89.     DECLARE FUNCTION GetTitleDir (szDefault$) AS STRING
  90.     DECLARE FUNCTION CopyFiles(szTitleDir$) AS INTEGER
  91.     DECLARE SUB RegisterFont(fontfile$, fontname$)
  92.     DECLARE SUB ModifyViewerIni
  93.     DECLARE SUB RegisterCustomFonts
  94.     DECLARE SUB ModifyProgramManager
  95.     DECLARE SUB ShowSuccess
  96.     DECLARE SUB RegisterDrivers
  97.     DECLARE SUB DoNoEvil
  98.     
  99.     '' The following statement turns size checking off. Set it to scmOnFatal 
  100.     '' to enable size checking, where Setup will compare the disk file size 
  101.     '' with the INF file size and report an error if they are not the same.
  102.     
  103.     i% = SetSizeCheckMode(scmOff)
  104.     
  105.     '' Set the title and banner bitmap. You must rebuild MSCUISTF.DLL to 
  106.     '' alter the banner bitmap.
  107.     
  108.     SetTitle " Legend Multimedia Setup"
  109.     SetBitmap CUIDLL$, LOGO 
  110.     
  111.     '' Read in the INF file.
  112.     
  113.     DoNoEvil
  114.  
  115.     ReadInfFile GetSymbolValue("STF_CWDDIR") + "TITLE.INF"
  116.     
  117.     '' Decide where to put title files
  118.     IF PromptForPath% = 1 THEN
  119.         szTitleDir$ = GetTitleDir(DefaultPath$)
  120.         IF szTitleDir$ = "" THEN
  121.             GOTO QUIT
  122.         ENDIF
  123.     ELSE
  124.         szTitleDir$ = GetWindowsDir()
  125.     ENDIF   
  126.     
  127.     '' Copy files
  128.     IF CopyFiles(szTitleDir$) = 0 THEN
  129.         GOTO QUIT
  130.     ENDIF
  131.  
  132.     '' Create the MVIEWER2.EXE MVB association 
  133.     CreateIniKeyValue "WIN.INI", "Extensions", "MVB", "mviewer2.exe", cmoNone
  134.  
  135.     '' Register in VIEWER.INI
  136.     ModifyViewerIni
  137.  
  138.     '' Register custom fonts
  139.     RegisterCustomFonts
  140.  
  141.     '' Register drivers
  142.     RegisterDrivers
  143.     
  144.     '' Modify Program Manager
  145.     ModifyProgramManager    
  146.     
  147.     '' Success dialog
  148.     ShowSuccess
  149.     
  150.     '' Now start the title
  151.  
  152.     '' RUN "mviewer2.exe " + MVBFileName$ + ".MVB", NOWAIT
  153.  
  154.         j% = DoMsgBox("Windows 95 ready",TitleLongName$,0)
  155.  
  156.     j% = DoMsgBox("If you do not have Video for Windows, see Setup Help file",TitleLongName$,0)
  157.  
  158.  
  159. QUIT:
  160.     
  161.     END
  162.     
  163.  
  164. '*************************************************************************
  165. '** Purpose:
  166. '**     Prompts the user for a path for the title files
  167. '** Arguments:
  168. '**     szDefault$ - default path
  169. '** Returns:
  170. '**     New valid path name, or "" if the user quit.
  171. '*************************************************************************
  172.  
  173. FUNCTION GetTitleDir (szDefault$) STATIC AS STRING
  174.  
  175.     SetSymbolValue "String", TitleShortName$
  176.     SetSymbolValue "EditTextIn", szDefault$
  177.     SetSymbolValue "EditFocus", "ALL"
  178.  
  179.     GETPATH:
  180.  
  181.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, "FHelpDlgProc")
  182.  
  183.     IF sz$ = "CONTINUE" THEN
  184.         szTitleDir$ = GetSymbolValue("EditTextOut")
  185.         IF IsDirWritable(szTitleDir$) = 0 THEN
  186.  
  187.             BADPATH:
  188.  
  189.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfoDlgProc", 0, "")
  190.             IF sz$ = "REACTIVATE" THEN
  191.                 GOTO BADPATH
  192.             END IF
  193.             UIPop 1
  194.             GOTO GETPATH
  195.         END IF
  196.         UIPop 1
  197.         CreateDir szTitleDir$, cmoNone
  198.  
  199.     ELSEIF sz$ = "REACTIVATE" THEN
  200.         GOTO GETPATH
  201.  
  202.     ELSE
  203.         szTitleDir$ = ""
  204.  
  205.     END IF
  206.  
  207.     GetTitleDir = szTitleDir$
  208.  
  209. END FUNCTION
  210.  
  211.  
  212. '*************************************************************************
  213. '** Purpose:
  214. '**     Copies the files in the INF file
  215. '** Arguments:
  216. '**     szTitleDir$ - destination directory for the title files
  217. '** Returns
  218. '**     1 if files were copied, 0 otherwise
  219. '*************************************************************************
  220.  
  221. FUNCTION CopyFiles(szTitleDir$) STATIC AS INTEGER
  222.  
  223.     '' Add all system files to the copy list
  224.     AddSectionFilesToCopyList "System Files", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
  225.     
  226.     '' Add all of the title files to the copy list
  227.     AddSectionFilesToCopyList "Installed Title Files", GetSymbolValue("STF_SRCDIR"), szTitleDir$
  228.     
  229.     '' Check size
  230.     szExtras$ = "Extra"
  231.     szCosts$ = "Costs"
  232.     szNeededs$ = "Neededs"
  233.     FOR i% = 1 TO 26 STEP 1
  234.         AddListItem szExtras$, "0"
  235.     NEXT i%
  236.     
  237.     '' We assume that VIEWER.INI will take another 4K
  238.     ReplaceListItem szExtras$, ASC(MID$(GetWindowsDir(), 1, 1)) - ASC("A") + 1, STR$(4096)
  239.     
  240.     '' Get amount of space required
  241.     StillNeed& = GetCopyListCost(szExtras$, szCosts$, szNeededs$)
  242.     
  243.     '' Put up a message if there is not enough space
  244.     FOR i% = 1 TO 26 STEP 1
  245.         IF VAL(GetListItem(szNeededs$, i%)) > 0 THEN
  246.     
  247.             SetSymbolValue "String1", LTRIM$(STR$(VAL(GetListItem(szCosts$, i%)) / 1024))
  248.             SetSymbolValue "String2", CHR$(i% - 1 + ASC("A"))
  249.     
  250.             TOOBIG:
  251.     
  252.             sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
  253.             IF sz$ = "REACTIVATE" THEN
  254.                 GOTO TOOBIG
  255.             END IF
  256.             UIPop 1
  257.             CopyFiles = 0
  258.             GOTO DONTCOPY
  259.         END IF
  260.     NEXT i%
  261.     
  262.     '' Copy the files
  263.     CopyFilesInCopyList
  264.     
  265.     CopyFiles = 1
  266.  
  267. DONTCOPY:
  268.  
  269. END FUNCTION
  270.  
  271.  
  272. '*************************************************************************
  273. '** Purpose:
  274. '**     Puts up a success dialog
  275. '*************************************************************************
  276.  
  277. SUB ShowSuccess STATIC
  278.  
  279.     SUCCESS:
  280.     
  281.     SetSymbolValue "String1", TitleShortName$
  282.     sz$ = UIStartDlg(CUIDLL$, SUCCESS, "FInfoDlgProc", 0, "")
  283.     IF sz$ = "REACTIVATE" THEN
  284.         GOTO SUCCESS
  285.     END IF
  286.     UIPop 1
  287.     
  288. END SUB
  289. '*************************************************************************
  290. '** Purpose:
  291. '**     Assuage the User's fear of system destruction
  292. '*************************************************************************
  293.  
  294. SUB DoNoEvil STATIC
  295.  
  296. j% = DoMsgBox(" See SetupHelp file for more setup information!", TitleLongName$, 0)
  297.     
  298. END SUB
  299.  
  300.  
  301. '*************************************************************************
  302. '** Purpose:
  303. '**     Appends a file name to the end of a directory path,
  304. '**     inserting a backslash character as needed.
  305. '** Arguments:
  306. '**     szDir$  - full directory path (with optional ending "\")
  307. '**     szFile$ - filename to append to directory
  308. '** Returns:
  309. '**     Resulting fully qualified path name.
  310. '*************************************************************************
  311.  
  312. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  313.     IF szDir$ = "" THEN
  314.         MakePath = szFile$
  315.     ELSEIF szFile$ = "" THEN
  316.         MakePath = szDir$
  317.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  318.         MakePath = szDir$ + szFile$
  319.     ELSE
  320.         MakePath = szDir$ + "\" + szFile$
  321.     END IF
  322. END FUNCTION
  323.  
  324.  
  325. '*************************************************************************
  326. '** Purpose:
  327. '**     Registers a font.
  328. '** Arguments:
  329. '**     fontfile$ - font filename
  330. '**     fontname$ - font name.
  331. '*************************************************************************
  332.  
  333. SUB RegisterFont(fontfile$, fontname$) STATIC
  334.  
  335.     '' A simple error catching wrapper around AddFont, which is a 'C' routine in MSCUISTF.DLL
  336.  
  337.     IF AddFont(fontfile$, fontname$) = -1 THEN
  338.         j% = DoMsgBox("Could not install " + fontfile$ + " font.", "Viewer Font Installation", 0)
  339.     ENDIF
  340.  
  341. END SUB
  342.  
  343.  
  344. '*************************************************************************
  345. '** Purpose:
  346. '**     Registers title in VIEWER.INI
  347. '*************************************************************************
  348.  
  349. SUB ModifyViewerIni STATIC
  350.  
  351.     '' Get the VIEWER.INI file
  352.     
  353.     szIni$ = MakePath(GetWindowsDir(), "VIEWER.INI")
  354.  
  355.     '' First register the title file, setting the Name and Path entries. 
  356.     '' We assume that the MVB file is the same directory as SETUP.EXE.
  357.     ''
  358.     '' CUSTOMIZATION: If you're installing multiple MVB files, copy the
  359.     '' following two statements for each additional file, substituting
  360.     '' the appropriate long name and MVB filename for the TitleLongName$
  361.     '' and MVBFileName$ variables.
  362.     
  363.     CreateIniKeyValue szIni$, MVBFileName$, "Name", TitleLongName$, cmoOverwrite
  364.     CreateIniKeyValue szIni$, MVBFileName$, "Path", GetSymbolValue("STF_SRCDIR"), cmoOverwrite
  365.     
  366.     '' Now we have to register the MVB file in the [FILES] section, so 
  367.     '' Viewer can find files that are not on the path and display a 
  368.     '' special message when a file is not found.
  369.  
  370.     CreateIniKeyValue szIni$, "FILES", MVBFileName$ + ".MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the " + TitleLongName$ + " disk.", cmoOverwrite
  371.  
  372.     '' CUSTOMIZATION: If you're installing a Help title or any custom DLLs,
  373.     '' you should copy the preceding statement for each extra title or DLL.
  374.     ''
  375.     '' Example for installing an extra title:
  376.     ''
  377.     ''    CreateIniKeyValue szIni$, "FILES", "GALHELP.MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the Viewer 2.0 Gallery disk.", cmoOverwrite
  378.     ''
  379.     '' Example for installing a custom DLL:
  380.     ''
  381.     ''    CreateIniKeyValue szIni$, "FILES", "GALLERY.DLL", GetSymbolValue("STF_SRCDIR") + "," + "A required file is missing. Please reinstall the Viewer Gallery.", cmoOverwrite
  382.  
  383. END SUB
  384.  
  385.  
  386. '*************************************************************************
  387. '** Purpose:
  388. '**     Creates program manager entries for the title
  389. '*************************************************************************
  390.  
  391. SUB ModifyProgramManager STATIC
  392.  
  393.     '' Create the program manager group
  394.  
  395.     szGork$ = GetSymbolValue("STF_SRCDIR")
  396.  
  397.     '' j% = DoMsgBox(szGork$, "Path Name", 0)
  398.  
  399.     CreateProgmanGroup ProgmanGroup$, "", cmoNone
  400.     ShowProgmanGroup ProgmanGroup$, 1, cmoNone
  401.     
  402.     '' Create an entry for the title
  403.      
  404.     '' [no icon] CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), ",,,,szGork$", cmoOverwrite
  405.        CreateProgmanItem ProgmanGroup$, "SetupHelp", MakePath(GetSymbolValue("STF_SRCDIR"), "Setuphlp.txt"),MakePath(GetSymbolValue("STF_SRCDIR"), "leghelp.ico"), cmoOverwrite    
  406.  
  407.     '' CUSTOMIZATION: 
  408.     ''
  409.     '' To create additional Program Manager items, copy the preceding 
  410.     '' statement for each additional item, substituting the appropriate
  411.     '' name for the MVBFileName$ variable.
  412.     ''
  413.     '' To display a custom icon with the Program Manager item, specify
  414.     '' the icon filename with the fourth parameter (this parameter is 
  415.     '' currently an empty string, ""). The following example specifies 
  416.         '' an icon with the same filename as the .MVB file:
  417.     ''
  418.     CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".ICO")+",0,0,0,"+szGork$, cmoOverwrite
  419.  
  420. END SUB
  421.  
  422.  
  423. '*************************************************************************
  424. '** Purpose:
  425. '**     Registers custom fonts with Windows.
  426. '*************************************************************************
  427.  
  428. SUB RegisterCustomFonts STATIC
  429.  
  430.     '' CUSTOMIZATION: If you install custom fonts, then add statements
  431.     '' in this routine to register the fonts with the current Windows 
  432.     '' session and to add them to the WIN.INI [Fonts] section. 
  433.     ''
  434.     '' Note that TrueType fonts can only be installed in Windows 3.1.
  435.     '' RegisterFont automatically creates the required .FOT file for 
  436.     '' TrueType fonts.
  437.     ''    
  438.     '' The following example registers a font residing in MISTRAL.TTF
  439.     '' and installs the font with the name Mistral (True Type):
  440.     '' 
  441.     ''     RegisterFont "mistral.ttf", "Mistral (TrueType)"
  442.     ''
  443.  
  444. END SUB
  445.  
  446.  
  447. '*************************************************************************
  448. '** Purpose:
  449. '**     Registers Windows drivers
  450. '*************************************************************************
  451.  
  452. SUB RegisterDrivers STATIC
  453.  
  454. '' CUSTOMIZATION: Video for Windows is not a standard component of
  455. '' Windows 3.1. If your title uses video, proceed as follows.
  456. ''
  457. '' 1) Add the following files to the [System Files] section of the INF file:
  458. ''
  459. ''    dispdib.dll
  460. ''    msvideo.dll
  461. ''    indeo.drv
  462. ''    mciavi.drv
  463. ''    msvidc.drv
  464. ''
  465. '' 2) Add the above files to your release directory. US versions can be 
  466. ''    found in the \SYSTEM subdirectory of your Viewer disc. French and
  467. ''    German versions were not available at ship time. Please contact 
  468. ''    Microsoft or check the Multimedia Viewer section on the Microsoft
  469. ''    Compuserve Forum for further details.
  470. ''
  471. '' 3) Uncomment the following lines:
  472. ''
  473. ''    CreateIniKeyValue "WIN.INI", "mci extensions", "AVI", "AVIVIDEO", cmoNone
  474. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "mci", "AVIVIDEO", "MCIAVI.DRV", cmoNone
  475. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.msvc", "msvidc.drv", cmoNone
  476. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.rt21", "indeo.drv", cmoNone
  477. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.cvid", "iccvid.drv", cmoNone
  478.  
  479. END SUB
  480.